gusucode.com > VC++ Flash(SWF)文件创建生成Lib库源码+demo-源码程序 > VC++ Flash(SWF)文件创建生成Lib库源码+demo-源码程序/code/SWFLIB_Library/SWFBitmap.cpp
// SWFBitmap.cpp: implementation of the CSWFBitmap class. // ////////////////////////////////////////////////////////////////////// #include "SWFBitmap.h" CSWFBitmap::CSWFBitmap(USHORT nID, UCHAR* filename) { // Init members m_ObjectType = SWF_OBJECT_TYPE_BITMAP; m_SWFStream = NULL; m_SWFStreamLength = 0; m_ID = nID; m_DefineBits.Header.TagCodeAndLength = (21 << 6) | 0x003F; m_DefineBits.CharacterID = nID; FILE* image = fopen((char*)filename, "rb"); if (image != NULL) { // Calculate DefineBitsJPEG2 tag size int fileLength = filelength(fileno(image)); UCHAR* pBuffer = new UCHAR[fileLength]; fread(pBuffer, 1, fileLength, image); m_DefineBits.Header.Length = fileLength + 8; m_SWFStreamLength = sizeof(SWF_DEFINE_BITS_JPEG2_TAG) + (m_DefineBits.Header.Length-2); m_SWFStream = (UCHAR*)malloc(m_SWFStreamLength*sizeof(UCHAR)); memset(m_SWFStream, 0, m_SWFStreamLength); // Write header and data UCHAR JPEGEndFlag[2] = {0xFF, 0xD9}; UCHAR JPEGStartFlag[2] = {0xFF, 0xD8}; memcpy(m_SWFStream, &m_DefineBits, sizeof(SWF_DEFINE_BITS_JPEG2_TAG)); memcpy(m_SWFStream+sizeof(SWF_DEFINE_BITS_JPEG2_TAG), &JPEGEndFlag, 2); memcpy(m_SWFStream+sizeof(SWF_DEFINE_BITS_JPEG2_TAG)+2, &JPEGStartFlag, 2); memcpy(m_SWFStream+sizeof(SWF_DEFINE_BITS_JPEG2_TAG)+4, pBuffer, fileLength); memcpy(m_SWFStream+sizeof(SWF_DEFINE_BITS_JPEG2_TAG)+4+fileLength, &JPEGEndFlag, 2); fclose(image); delete pBuffer; } } CSWFBitmap::~CSWFBitmap() { if (m_SWFStream != NULL) { delete m_SWFStream; m_SWFStream = NULL; } } UCHAR* CSWFBitmap::BuildSWFStream() { return m_SWFStream; } int CSWFBitmap::GetSWFStreamLength() { return m_SWFStreamLength; }